import request from '@/utils/request'

// 获取文章列表
export const getArticleList = async () => {
  try {
    const response = await request.get('/api/user/forum/article');
    
    // 检查并处理响应数据，确保返回标准格式
    if (response && response.data) {
      // 如果数据直接就是数组格式
      if (Array.isArray(response.data)) {
        return { data: response.data };
      } 
      // 如果数据是包含列表的对象
      else if (response.data.list && Array.isArray(response.data.list)) {
        return { data: response.data.list };
      }
      else if (response.data.items && Array.isArray(response.data.items)) {
        return { data: response.data.items };
      }
      else if (response.data.articles && Array.isArray(response.data.articles)) {
        return { data: response.data.articles };
      }
      // 如果数据是其他结构，但有data字段是数组
      else if (response.data.data && Array.isArray(response.data.data)) {
        return { data: response.data.data };
      }
      // 未知格式，返回空数组
      else {
        console.error('未能识别的API返回格式', response.data);
        return { data: [] };
      }
    }
    
    return { data: [] };
  } catch (error) {
    console.error('API请求失败:', error);
    throw error;
  }
};

// 获取文章评论
export const getArticleComments = (articleId) => {
  // 保留/api前缀，因为系统已做重定向
  return request.get('/api/user/forum/comment', {
    params: { articleId }
  });
};

// 添加评论
export const addArticleComment = (articleId, commentData) => {
  // 构造符合API要求的请求数据
  const requestData = {
    // 文章ID（必需）
    articleId: articleId,
    // 用户ID（必需）- 这里使用commentData中的userId，或者从存储/context中获取
    userId: commentData.userId || 1, // 默认使用1，实际应从用户会话中获取
    // 评论内容（必需）
    content: commentData.content,
    // 可选参数
    ...(commentData.id && { id: commentData.id }),
    ...(commentData.createTime && { createTime: commentData.createTime })
  };
  
  return request.post('/api/user/forum/comment', requestData);
};

// 点赞文章
export const likeArticle = (articleId) => {
  return request.post(`/api/user/forum/article/${articleId}/like`);
};

// 创建新帖子
export const createArticle = (articleData) => {
  // 转换为后端期望的格式
  const requestData = {
    // 可选ID
    ...(articleData.id && { id: articleData.id }),
    // 用户ID - 用于获取用户信息
    ...(articleData.userId && { userId: articleData.userId }),
    // 标题
    title: articleData.title,
    // 富文本内容
    richContent: articleData.content || articleData.richContent,
    // 可选参数-点赞数
    ...(articleData.likeCount !== undefined && { likeCount: articleData.likeCount }),
    // 可选参数-创建时间(默认由后端生成)
    ...(articleData.createTime && { createTime: articleData.createTime }),
    // 分类信息
    ...(articleData.category && { category: articleData.category })
  };
  
  return request.post('/api/user/forum/article', requestData);
};

